package com.example.haojiutao.service;


import com.example.haojiutao.common.Result;
import com.example.haojiutao.model.domain.Order;
import com.example.haojiutao.model.vo.response.CommentOrderDetailVO;
import com.example.haojiutao.model.vo.response.OrderGoodsDetailVO;
import com.example.haojiutao.model.vo.response.ReOrderGoodsDetailVO;

import java.util.List;

/**
 * @Description: 订单业务层
 * @Author: zhou_yuan
 * @CreateTime： 2024/1/22 15:26
 */
public interface OrderService{
    /*
     * @Description: 用户下单，通过在商品详情页下单，买卖填写地址、电话等信息，提交订单
     * @Author: zhou_yuan
     * @CreateTime： 2024/1/22 15:26
     * @param: order
     * @return: com.example.haojiutao.common.Result
     */
    Result insertOrder(Order order);
    /*
     * @Description:确认收货接口,买家收货后点击签收按钮，后台修改订单状态为“已签收”
     * @Author: zhou_yuan
     * @CreateTime： 2024/1/22 15:29
     * @param: order
     * @return: com.example.haojiutao.common.Result
     */
    Result updateOrder(Order order);

    /*
     * @Description:查看订单
     * @Author: zhou_yuan
     * @CreateTime： 2024/1/22 15:33
     * @param: orderNumber
     * @return: com.example.haojiutao.common.Result
     */
    Order selectById(Integer orderNumber);

    /*
     * @Description:卖家添加物流单号，更改订单状态为待收货
     * @Author: zhou_yuan
     * @CreateTime： 2024/1/22 15:39
     * @param: order
     * @return: com.example.haojiutao.common.Result
     */
    Result updateOrderLogistics(Order order);


    /*
     * @Description: 显示个人订单列表
     * @Author: zhou_yuan
     * @CreateTime： 2024/1/22 15:39
     * @param: goods
     * @return: com.example.haojiutao.common.Result
     */
    List<Order> selectList(Order order);
    /*
     * @Description: 删除订单
     * @Author: zhou_yuan
     * @CreateTime： 2024/1/22 15:40
     * @param: orderNumber
     * @return: com.example.haojiutao.common.Result
     **/
    Result deleteById(Integer orderNumber);

    /*
     * @Description:待发货列表
     * @Author: zhou_yuan
     * @CreateTime： 2024/1/22 15:40
     * @param: orderNumber
     * @return: com.example.haojiutao.common.Result
     */
    List<OrderGoodsDetailVO> selectBackOrder(OrderGoodsDetailVO orderGoodsDetailVO);

    /*
     * @Description: TODO 管理员更新订单信息
     * @Author: zhou_yuan
     * @CreateTime： 2024/1/22 15:40
     * @param: order
     * @return: com.example.haojiutao.common.Result
     **/

    OrderGoodsDetailVO selectByOrderNumber(Integer orderNumber);
    /*
     * @Description: 待收货订单列表
     * @Author: zhou_yuan
     * @CreateTime： 2024/1/22 15:41
     * @param: goods
     * @return: com.example.haojiutao.common.Result
     */
    List<OrderGoodsDetailVO> selectAfterSendOrder(OrderGoodsDetailVO orderGoodsDetailVO);


    List<OrderGoodsDetailVO> selectBeforePayOrder(OrderGoodsDetailVO orderGoodsDetailVO);

    /*
     * @Description: TODO 管理员修改订单信息
     * @Author: zhou_yuan
     * @CreateTime： 2024/1/22 15:45
     * @param: order
     * @return: com.example.haojiutao.common.Result
     **/
    Result saveOrder(Order order);

    List<OrderGoodsDetailVO> selectListByUser(OrderGoodsDetailVO orderGoodsDetailVO);

    Result updateOrderComment(Integer orderNumber);

}
